package livraria.servidor;


import java.rmi.RemoteException;
import java.util.ArrayList;

import livraria.servidor.rmi.LivroRMI;

/**
 *
 * @author Gabriel Centenaro
 * @author Vinicius Andreatta
 */
public class Livro implements LivroRMI {

    private int codigo = 0;
    private String titulo;
    private String autor;
    private int quantidade = 0, edicao = 0;
    public static ArrayList<Livro> livros = new ArrayList<>();

    public Livro() {
    	super();
    }

    public Livro(String _titulo, String _autor, int _quantidade, int _edicao) {
        this.titulo = _titulo;
        this.autor = _autor;
        this.quantidade = _quantidade;
        this.edicao = _edicao;
    }
    
    public Livro(int _codigo, int _quantidade) {
        this.codigo = _codigo;
        this.quantidade = _quantidade;
    }

    public Livro(String serialized) throws Exception {
        String valores[] = serialized.split("\\|");

        int i = 0;

        if (valores.length == 5) {
            this.codigo = Integer.parseInt(valores[i++]);
        }
        
        this.titulo = valores[i++];
        this.autor = valores[i++];
        this.quantidade = Integer.parseInt(valores[i++]);
        this.edicao = Integer.parseInt(valores[i++]);
    }

    public boolean cadastra() {
        System.out.println("here2");
        Transmissor t = Menu.getTransmissor();
        String retorno = t.transmite(this);

        if (retorno != null && retorno.startsWith("SUCESSO:")) {
            this.codigo = Integer.parseInt(retorno.split(":")[1]);

            System.out.println("FOI -> " + this.serialized());

            livros.add(this);
            return true;
        }

        System.out.println("NAOFOII");

        return false;
    }

    public boolean vende() {

        Transmissor t = Menu.getTransmissor();
        
        String retorno = t.transmite(this);

        if (retorno != null && retorno.startsWith("SUCESSO:")) {
            return true;
        }

        return false;
    }

    public ArrayList<Livro> busca() {

        Transmissor t = Menu.getTransmissor();
        
        ArrayList<Livro> lista = t.transmite(this.titulo);

        return lista;
    }

    public String serialized() {
        return (this.codigo != 0 ? this.codigo + "|" : "") + this.titulo + "|" + this.autor + "|" + this.quantidade + "|" + this.edicao;
    }

    public int getCodigo() {
        return codigo;
    }

    public String getAutor() {
        return autor;
    }

    public int getEdicao() {
        return edicao;
    }

    public int getQuantidade() {
        return quantidade;
    }

    public String getTitulo() {
        return titulo;
    }
}
